package work20241211.b;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * @author zdl
 * @date 2024/12/11
 */
public class Demo {
    public static void main(String[] args) {
        /**
         * 1题 键盘输入身份证号,
         * 判断此人是出生年月日,
         * 此人男女(倒数第二位是奇数男,偶数女),
         * 是否成年
         *
         * 1) 键盘录入
         * 2) 根据身份证号特性,截取其中年月日
         * 3) 根据下标或者截取获得最后一位
         * 4) 首先年份是否够,如果今年18岁,那再考虑月份,如果当月生日,最后考虑天数
         */
        String idCard1 = "410181200612116054";
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的身份证号:");
        String idCard = sc.next();
        if (idCard.length() != 18){
            System.out.println("身份证号为18位！");
            return;
        }
        String birth = idCard.substring(6, 14);
        String birthYear = idCard.substring(6, 10); //出生年
        String birthMonth = idCard.substring(10, 12);   //出生月
        String birthDay = idCard.substring(12, 14); //出生日
        String sex = idCard.substring(16, 17);  //性别
        System.out.println("出生年月："+birth);
        /*System.out.println(birthYear);
        System.out.println(birthMonth);
        System.out.println(birthDay);
        System.out.println(sex);*/
        if (Integer.parseInt(sex) % 2 == 0){
            System.out.println("女生");
        }else {
            System.out.println("男生");
        }
        Date date = new Date();
        int now_year = date.getYear()+1900; //当前年
        int now_month = date.getMonth()+1;//当前月
        SimpleDateFormat sdf = new SimpleDateFormat("dd");
        String now = sdf.format(date);
        int now_day = Integer.parseInt(now); //当前日
        //System.out.println(now);
        if ((now_year - Integer.parseInt(birthYear)) ==18 ){ //当前年 - 身份证年 = 18 进行判断月日
            //当前月 大于  出生月 那就是成年
            //若当前月与出生月相同  当前日与出生比较，若当前日大于出生日  那就成年
            if (now_month > Integer.parseInt(birthMonth) || (now_day > Integer.parseInt(birthDay) && now_month ==Integer.parseInt(birthMonth)) ){
                System.out.println("成年");
            }else {
                System.out.println("未成年");
            }
        }else if ((now_year - Integer.parseInt(birthYear)) >=18 ){
            System.out.println("成年");
        }else {
            System.out.println("未成年");
        }


    }
}
